14259
13990
مغلق. هذا السؤال يحتاج إلى تفاصيل أو وضوح. انها لا تقبل الإجابات حاليا.
تريد تحسين هذا السؤال؟ أضف التفاصيل وقم بتوضيح المشكلة عن طريق تحرير هذا المنشور.
مغلق منذ سنة.
تحسين هذا السؤال
أقوم ببعض تحدي الكود وأريد الحصول على القيم الثلاث الأولى من المصفوفة الخاصة بي عن طريق تحديد فهرس البداية والحصول على القيم الأولى فقط (3 أو يمكن أن تكون بأي طول) من فهرس البداية.
لقد جربت هذا الرمز وهو يعمل ولكن بنية الكود طويلة جدًا ، فكيف يمكنني جعل هذا أقصر حتى يكون من السهل فهمه.
كثافة العمليات ن = 10 ؛
توقيع مزدوج = مزدوج جديد [] {1 ، 1 ، 1} ؛
مزدوج [] ret = مزدوج جديد [n] ؛
مجموع مزدوج = 0 ؛
ret [0] = التوقيع [0] ؛
ret [1] = التوقيع [1] ؛
ret [2] = التوقيع [2] ؛
int x، i؛
لـ (i = 0 ؛ i 
                                
باستخدام LINQ يمكنك تجربة شيء مثل هذا:
قيم var = array.Skip (index)
.تؤخذ)
.لمجموعة()؛
حيث الفهرس هو فهرس العنصر الأول و n عدد العناصر التي تريد اختيارها.
على سبيل المثال https://dotnetfiddle.net/Pk1rwY
كملاحظة جانبية. لا يعني استخدام LINQ أن شفرتك ستكون أسرع. سيكون أكثر إحكاما / قابلا للقراءة وما إلى ذلك. من أجل تقييم مدى أداء الكود الخاص بك ، عليك استخدام شيء مثل BenchmarkDotNet.
|
لا يوجد حل Linq:
خاص ثابت T [] استخراج  (T [] مصدر ، int fromIndex ، int length) {
إذا (خالية == مصدر)
طرح ArgumentNullException الجديد (nameof (المصدر)) ؛
وإلا إذا (fromIndex <0)
طرح ArgumentOutOfRangeException الجديد (nameof (fromIndex) ،
"من الفهرس يجب أن تكون غير سلبية") ؛
وإلا إذا (الطول <0)
طرح ArgumentOutOfRangeException الجديد (nameof (length) ،
"يجب أن يكون الطول غير سالب") ؛
إذا (fromIndex> = source.Length || length == 0)
إرجاع T جديد [0] ؛
T [] result = new T [Math.Min (length، source.Length - fromIndex)]؛
Array.Copy (المصدر ، fromIndex ، النتيجة ، 0 ، result.Length) ؛
نتيجة العودة
}
ثم
مزدوج [] توقيع = مزدوج جديد [] {0 ، 1 ، 2 ، 3 ، 4 ، 5} ؛
مزدوج [] ret = استخراج (توقيع ، 3 ، 2) ؛
Console.Write (string.Join ("،"، ret))؛
النتيجة:
3 ، 4
|
من سؤالك ، تحتاج إلى الاستفادة من عوامل التشغيل .Take و. Skip.
var نتيجة = array.Skip (startIndex) .Take (numberOfElements) ؛
من التعليمات البرمجية الخاصة بك ، يبدو أنك تحاول القيام بشيء مختلف بعض الشيء ، وهو جمع العناصر. قد يكون عامل التشغيل .Sum مفيدًا هنا.
|
ليس الجواب الذي تبحث عنه؟ تصفح الأسئلة الأخرى الموسومة بـ c # arrays linq أو اطرح سؤالك الخاص.